package edu.nf.ch09;

/**
 * @author CSY
 * @date 2025 - 04 - 17
 */
public abstract class Teacher {
    public void call(){
        System.out.println("上课点名");
    }

    /**
     * 抽象的上课方法，由子类实现 - 因为每个老师上课的内容都不同
     */
    public abstract void lessons();

    /**
     * 抽象作业布置方法，由子类实现
     */
    public abstract void homework();

    /**
     * 钩子方法 - 子类重写该方法实现剔除掉不想要执行的步骤
     * @return
     */
    public boolean hock(){
        return true;
    }

    /**
     * 模版方法
     */
    public void work(){
        call();
        lessons();
        if (hock()){
            homework();
        }
    }
}
